package com.tjy.wfx.service.impl;

import com.tjy.wfx.dao.SysModuleMapper;
import com.tjy.wfx.dao.UserInfoMapper;
import com.tjy.wfx.model.SysModule;
import com.tjy.wfx.model.UserInfo;
import com.tjy.wfx.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;

import java.util.ArrayList;
import java.util.List;

@Service
@Transactional
public class UserInfoServiceImpl implements UserInfoService {

    @Autowired
    private UserInfoMapper userInfoMapper;
    @Override
    public UserInfo login(String account) {
        Example example= new Example(UserInfo.class);
        Example.Criteria and = example.and();
        if(account!=null){
            and.andEqualTo("account",account);
        }
        UserInfo userInfo = userInfoMapper.selectOneByExample(example);
        return userInfo;
    }

    @Autowired
    private SysModuleMapper sysModuleMapper;
    @Override
    public List<SysModule> findMenu(String account) {
//1.根据用户账号 查询用户的菜单信息
        List<SysModule> menu = sysModuleMapper.findAllModule(account);
        //创建一个空循环
        List<SysModule> list = new ArrayList<>();
        //2.拿到用户菜单信息中的 顶级菜单的pid 把此条菜单信息封装到空集合中
        for (SysModule menu1 : menu) {
            if(menu1.getParentModule().equals("0101")){
                list.add(menu1);
            }
        }
        //3.循环用户菜单集合 和 存入顶级菜单的集合
        //3.1把顶级菜单中的id 和 用户菜单的pid进行比对(拿到顶级菜单对应的次级菜单信息) 把数据放在菜单实体类new出来的新集合中
        //3.2 把所有次级菜单 封装到menu实体类的集合中
        for (SysModule menu1 : list) {
            for (SysModule menu2 : menu) {
                if(menu1.getModuleCode().equals(menu2.getParentModule())){
                    menu1.getCode().add(menu2);
                }
            }
        }
        //总结:list集合中包含1.顶级菜单信息(单条) 2.次级菜单信息(嵌套list集合次级菜单)
        return list;
    }
}
